#include <sys/types.h>
#include "libFleds.h"
#include <sys/ioctl.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>

char splash_1[] = {0x3F, 0x0, 0x0, 0x5, 0x0, 0x0, 0x1, 0x0, 0xF0, 0x0, 0x0, 0x80, 0x0, 0x3E, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x0, 0xF0, 0xF0, 0x0, 0x90, 0x90, 0x0, 0x60, 0x60, 0x0, 0x0, 0x4, 0x4, 0x0, 0x2A, 0x2A, 0x0, 0x2A, 0x2A, 0x0, 0x10, 0x10, 0x0, 0x0, 0x0, 0xBC, 0x0, 0xBC};
char splash_2[] = {0x0, 0x0, 0x3F, 0x0, 0x0, 0x5, 0x0, 0xF0, 0x1, 0x0, 0x80, 0x0, 0x3E, 0x3E, 0x0, 0x2A, 0x2A, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF0, 0xF0, 0x0, 0x90, 0x90, 0x0, 0x60, 0x60, 0x4, 0x0, 0x4, 0x2A, 0x0, 0x2A, 0x2A, 0x0, 0x2A, 0x10, 0x0, 0x10, 0x0, 0x0, 0x0, 0xBC, 0x0, 0x0};
char splash_3[] = {0x0, 0x3F, 0x0, 0x0, 0x5, 0x0, 0xF0, 0xF1, 0x0, 0x80, 0x80, 0x0, 0x0, 0x3E, 0x3E, 0x0, 0x2A, 0x2A, 0x0, 0x0, 0x0, 0xF0, 0x0, 0xF0, 0x90, 0x0, 0x90, 0x60, 0x0, 0x60, 0x4, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBC};
char splash_4[] = {0x3F, 0x3F, 0x0, 0x5, 0x5, 0x0, 0x1, 0xF1, 0xF0, 0x0, 0x80, 0x80, 0x3E, 0x0, 0x3E, 0x2A, 0x0, 0x2A, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x90, 0x0, 0x0, 0x60, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0xBC, 0x0};
char splash_5[] = {0x0, 0x3F, 0x3F, 0x0, 0x5, 0x5, 0xF0, 0x1, 0xF1, 0x80, 0x0, 0x80, 0x3E, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x90, 0x0, 0x0, 0x60, 0x0, 0x4, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0xBC, 0xBC, 0x0,};
char splash_6[] = {0x3F, 0x0, 0x3F, 0x5, 0x0, 0x5, 0xF1, 0x0, 0x1, 0x80, 0x0, 0x0, 0x0, 0x0, 0x3E, 0x0, 0x0, 0x2A, 0x0, 0x0, 0x0, 0x0, 0xF0, 0x0, 0x0, 0x90, 0x0, 0x0, 0x60, 0x0, 0x4, 0x4, 0x0, 0x2A, 0x2A, 0x0, 0x2A, 0x2A, 0x0, 0x10, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0xBC, 0xBC};
char wave[] = {0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10, 0x0A, 0x05, 0x10};
char text[] = "Trabajo Practico de Sistemas Operativos 2008 - Creacion de un driver para Minix - ABRAMOWICZ GONI PAN - ITBA - www.itba.edu.ar";

void load(fledsADT fleds, char splash[])
{
	int fd,i=0,j=0;
	pic_t pic;

	clear(fleds);

	for (i = 0; i < 16; i++)
	{
		pic.cols[i].red = splash[j++];
		pic.cols[i].green = splash[j++];
		pic.cols[i].blue = splash[j++];		
	}

	loadPic(fleds,pic,0,0);

	return;
}	

void main(void)
{
	fledsADT fleds;

	fleds= newFleds(8,18,"");

	load(fleds,splash_1);
	show(fleds);
	animate(fleds,SCROLL_RIGHT, 17,100000);
	load(fleds,splash_2);
	show(fleds);
	animate(fleds,SCROLL_UP, 17,100000);
	load(fleds,splash_3);
	show(fleds);
	animate(fleds,SCROLL_DOWN, 17,100000);
	load(fleds,splash_4);
	show(fleds);
	animate(fleds,SCROLL_ROW_RIGHT, 17,200000);
	load(fleds,splash_5);
	show(fleds);
	animate(fleds,SCROLL_ROW_LEFT, 17,200000);
	load(fleds,splash_6);
	show(fleds);
	animate(fleds,SCROLL_COLUMN_DOWN, 17,200000);
	load(fleds,splash_1);
	show(fleds);
	animate(fleds,TWINKLE, 30,200000);
	load(fleds,splash_2);
	show(fleds);
	animate(fleds,LSD, 17,200000);
	load(fleds,wave);
	show(fleds);
	animate(fleds,WAVE, 2,200000);
	freeFleds(fleds);
	
	fleds= newFleds(8,strlen(text)*8*2,"");
	loadText(fleds,text,0,0);
	show(fleds);
	animate(fleds,SCROLL_RIGHT_CARRY,strlen(text)*8,200000);
	freeFleds(fleds);
}
